#pragma once

#include <string>
#include <memory>
#include <vector>
#include <vulkan/vulkan.h>


namespace vkinfer
{
	class VkShaderParser
	{
	private:
		VkDevice device = VK_NULL_HANDLE;

	public:
		static std::shared_ptr<VkShaderParser> get_instance(VkDevice device);
		VkShaderParser(VkDevice device);
		~VkShaderParser();

		VkShaderModule compile(const std::string& glsl_path);
	private:
		std::vector<char> read_file(const std::string& filepath);
	};

	VkShaderModule compile(VkDevice device, const std::string& glsl_path);
}


